package com.miage.kangourou.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.miage.kangourou.client.beans.Enseignant;
import com.miage.kangourou.client.beans.Evenement;
import com.miage.kangourou.client.beans.Groupe;
import com.miage.kangourou.client.beans.Matiere;
import com.miage.kangourou.client.beans.Promo;
import com.miage.kangourou.client.beans.Salle;
import com.miage.kangourou.client.beans.TypeEvenement;
import com.miage.kangourou.client.beans.Ue;
import com.miage.kangourou.client.beans.Utilisateur;

public interface GetListesServiceAsync {

	public void createEvent(Evenement evenement, AsyncCallback<Integer> callback);

	public void createEventRecurrence(Evenement evtRecurrent,
			Date startPeriode, Date endPeriode, List<Integer> joursCoches,
			AsyncCallback<Integer> eventCallback);

	public void deleteEvents(List<Integer> idsEventsToDelete,
			AsyncCallback<Boolean> callback);

	void findById(int id, AsyncCallback<Evenement> callback);

	public void findCreneauxLibres(ArrayList<Integer> groupes, Date dateDebut,
			int heureDebut, int minDebut, int heureFin, int minFin,
			AsyncCallback<List<Date>> creneauAsync);

	void getEnseignantList(AsyncCallback<List<Enseignant>> callback);

	void getEvenementBetweenTwoDateAndCriteria(int idGroupe, int idEnseignant,
			int idSalle, int idMatiere, Date debut, Date fin,
			AsyncCallback<List<Evenement>> evenements);

	void getGroupeList(AsyncCallback<List<Groupe>> callback);

	public void getGroupeListFromUe(int parseInt,
			AsyncCallback<List<Groupe>> cgroupe);

	void getMatiereList(AsyncCallback<List<Matiere>> callback);

	void getMatiereListFromUe(int parseInt,
			AsyncCallback<List<Matiere>> callback);

	void getPromoList(AsyncCallback<List<Promo>> callback);

	void getSalleList(AsyncCallback<List<Salle>> callback);

	void getTypeList(AsyncCallback<List<TypeEvenement>> callback);

	void getUEList(AsyncCallback<List<Ue>> callback);

	public void login(String email, String password,
			AsyncCallback<Utilisateur> callback);

	void loginUsingCookie(String cookie, AsyncCallback<Utilisateur> callback);

	void updateEvent(Evenement evenement, AsyncCallback<Integer> callback);

	void updateEventDate(int id_event, Date debut, Date fin, Utilisateur util,
			AsyncCallback<Boolean> callback);

}
